<?php

namespace GestionLivre\ContactBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use GestionLivre\ContactBundle\Entity\Contact;


class ContactController extends Controller
{
 
    /*
     * Affichage de la liste des contacts
     */
    public function listerContactAction()
    {
        $contacts = $this
            ->getDoctrine()
            ->getRepository('GestionLivreContactBundle:Contact')
            ->findBy(array(), array(
                'nom' => 'ASC'
            ));
        
        return $this->render('GestionLivreContactBundle:Contact:listerContact.html.twig', array(
            'contacts' => $contacts
        ));
    }
    
    /*
     * Suppression d'un contact
     */
    public function supprimerContactAction($id)
    {
        $contact = $this
            ->getDoctrine()
            ->getRepository('GestionLivreContactBundle:Contact')
            ->findOneBy(array('id' => $id));
        
        // Si le contact n'existe pas on redirige vers la liste de contacts
        if (!$contact) {
            return $this->redirect($this->generateUrl('GestionLivreContactBundle_listerContact'));           
        } 
        // Sinon on peut le supprimer
        else 
        {
            $em = $this->getDoctrine()->getEntityManager();
            $em->remove($contact);
            $em->flush();
            
            return $this->redirect($this->generateUrl('GestionLivreContactBundle_listerContact'));
        }
    }


    /*
     * Ajout d'un contact
     */
    public function ajouterContactAction()
    {      
        $contact = new Contact();
       
        $form = $this->createFormBuilder($contact)     
            ->add('nom','text', array 
                    ('label' => 'Nom'))
            ->add('prenom','text', array
                    ('label' => 'Prénom'))
            ->getForm(); 
        
        if($this->getRequest()->getMethod() == 'POST')
        {
            $form->bindRequest($this->getRequest());
            if($form->isValid())
            {
                // On récupère notre objet
                $contact = $form->getData();
                
                //On l'enregistre dans la base de données
                $em = $this->getDoctrine()->getEntityManager();
                try{
                    $em->persist($contact);
                    $em->flush();
                    
                    //On redirige
                    return $this->redirect($this->generateUrl('GestionLivreContactBundle_listerContact'));
                }
                catch (\PDOException $e)
                {
                    $e = 'Il y a une erreur.';
                }
            }
        }
        
        return $this->render('GestionLivreContactBundle:Contact:ajouterOuModifier.html.twig', array(
            'edition' => 'Ajouter',
            'form' => $form->createView()
        ));
    }
    
    /*
     * Modification d'un contact
     */
    public function modifierContactAction($id = NULL)
    {      
        if(isset($id))
        {
            $contact = $this
                ->getDoctrine()
                ->getRepository('GestionLivreContactBundle:Contact')
                ->findOneBy(array('id' => $id));
        }
            
        $form = $this->createFormBuilder($contact)     
            ->add('nom','text', array 
                    ('label' => 'Nom'))
            ->add('prenom','text', array
                    ('label' => 'Prénom'))
            ->getForm(); 
        
        if($this->getRequest()->getMethod() == 'POST')
        {
            $form->bindRequest($this->getRequest());
            if($form->isValid())
            {
                // On récupère notre objet
                $contact = $form->getData();
                
                //On l'enregistre dans la base de données
                $em = $this->getDoctrine()->getEntityManager();
                try{
                    $em->persist($contact);
                    $em->flush();
                    
                    //On redirige
                    return $this->redirect($this->generateUrl('GestionLivreContactBundle_listerContact'));
                }
                catch (\PDOException $e)
                {
                    $e = 'Il y a une erreur.';
                }
            }
        }
        
        return $this->render('GestionLivreContactBundle:Contact:ajouterOuModifier.html.twig', array(
            'edition' => 'Modifier',
            'form' => $form->createView()
        ));
    }
}
